.section .text.start
.global _start
_start:
    # 1. 设置栈指针
    la sp, stack_top        # stack_top在链接脚本中定义

    # 2. 调试：输出'S'（启动标记）
    li t0, 0x10000000       # UART基地址
    li t1, 'S'
    sb t1, 0(t0)

    # 3. 清零BSS段
    la a0, _bss_start       # BSS起始地址（链接脚本定义）
    la a1, _end             # BSS结束地址
    j bss_zero_loop
bss_zero_loop:
    bge a0, a1, bss_done    # 若a0 >= a1，跳转至bss_done
    sd zero, 0(a0)          # 写0至当前地址
    addi a0, a0, 8          # 地址递增8字节
    j bss_zero_loop
bss_done:

    # 4. 调试：输出'P'（栈设置完成）
    li t1, 'P'
    sb t1, 0(t0)

    # 5. 跳转至C主函数
    #  实验一：call start
    # 实验二
    call main
spin:
    j spin                  # 主函数返回则死循环
